package cn.kgc.jdbc;

import cn.kgc.entity.User;
import cn.kgc.utils.JDBCUtil;
import com.mysql.jdbc.Driver;

import java.sql.*;
import java.util.ArrayList;

/**
 * @author mosin
 * date 2022/2/9
 * @version 1.0
 */
public class JDBCDemo01 {
    // psvm  快速生成主方法
    public static void main(String[] args) {
        Connection connection = null;
        ResultSet rs = null;
        Statement stmt = null;
        try {
            //加载驱动  1.创建驱动对象    2.注册驱动
            Driver driver = new Driver();
            DriverManager.registerDriver(driver);
            /** 获取连接
             * 参数1： url  统一资源定位符  协议  ip  port  数据库名
             * 连接参数：
             * jdbc:mysql://localhost:3306/java2114?serverTimezone=UTC&useSSL=false
             * 参数2：用户名  root
             * 参数3：密码    root
             */
            String  url = "jdbc:mysql://localhost:3306/java2114";
           // String  url = "jdbc:mysql:///java2114";
            String username = "root";
            String password = "root";

            connection = DriverManager.getConnection(url, username, password);
            // System.out.println("connection = " + connection);

            // 获取一个操作数据库的对象
            stmt = connection.createStatement();
            //  1.编写sql  2.发送sql
            String sql = "select * from user";
            rs = stmt.executeQuery(sql);
            // 处理结果集   DQL  查询语句  rs.next()  返回结果集中是否好有下一条数据
            //创建集合  存储返回的数据  user对象
            ArrayList<User> users = new ArrayList<>();
            while (rs.next()){

                //获取每条记录中的字段值  1.通过字段名获取 2.通过列号获取
                int id = rs.getInt("id");
                String uname = rs.getString(2);
                String pwd = rs.getString(3);
                int role = rs.getInt(4);
                //将获取的数据封装成user对象
                User user = new User();
                user.setId(id);
                user.setPwd(pwd);
                user.setRole(role);
                user.setUsername(uname);
                //添加数据到集合
                users.add(user);
            }
            // 遍历集合
            for (User user : users) {
                System.out.println("user = " + user);
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            //  释放资源（关闭连接）  一定要执行   异常分别抓取 保证资源都被释放
            JDBCUtil.closeAll(rs, stmt, connection);
        }
    }

}
